package com.transaction.demo.base.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import lombok.extern.slf4j.Slf4j;

import com.transaction.demo.base.biz.SysRoleBiz;
import com.transaction.demo.base.enums.ExceptionEnum;
import com.transaction.demo.base.enums.RoleEnum;
import com.transaction.demo.base.exception.BaseServiceException;
import com.transaction.demo.base.service.SysMenuService;
import com.transaction.demo.base.service.SysRoleMenuService;
import com.transaction.demo.base.service.SysRoleService;
import com.transaction.demo.base.vo.req.SaveRoleMenuListReqVo;
import com.transaction.demo.base.vo.req.SysRoleAddReqVo;
import com.transaction.demo.base.vo.req.SysRoleListReqVo;
import com.transaction.demo.base.vo.req.SysRoleReqVo;
import com.transaction.demo.base.vo.req.SysRoleUpdateReqVo;
import com.transaction.demo.base.vo.resp.RoleMenuRespVo;
import com.transaction.demo.base.vo.resp.SysRoleRespVo;
import com.transaction.demo.common.util.ResultPage;

/**
 * 描述：角色表
 * 作者：马庆智
 * 日期：2023/03/28 17:07:14
 */
@Slf4j
@Service
public class SysRoleServiceImpl implements SysRoleService {

	@Autowired
	private SysRoleBiz sysRoleBiz;

	@Autowired
	private SysRoleMenuService roleMenuService;

	@Autowired
	private SysMenuService menuService;

	/**
	 * 查询角色表
	 *
	 * @param sysRole 请求参数
	 * @return SysRoleResp
	 * @author 马庆智
	 * @date: 2023/03/28 17:07:14
	 */
	@Override
	public SysRoleRespVo querySysRole(SysRoleReqVo sysRole) {

		return sysRoleBiz.querySysRole(sysRole);
	}

	/**
	 * 查询角色表列表
	 *
	 * @param sysRole 请求参数
	 * @return SysRoleResp
	 * @author 马庆智
	 * @date: 2023/03/28 17:07:14
	 */
	@Override
	public ResultPage<SysRoleRespVo> querySysRoleList(SysRoleListReqVo sysRole) {

		return sysRoleBiz.querySysRoleList(sysRole);

	}

	/**
	 * 添加角色表
	 *
	 * @param addReq 请求参数
	 * @return int
	 * @author 马庆智
	 * @date: 2023/03/28 17:07:14
	 */
	@Override
	public int saveSysRole(SysRoleAddReqVo addReq) {
		return sysRoleBiz.saveSysRole(addReq);
	}

	/**
	 * 删除角色表
	 *
	 * @param ids 请求参数
	 * @return int
	 * @author 马庆智
	 * @date: 2023/03/28 17:07:14
	 */
	@Override
	public int deleteSysRole(String ids) {
		return sysRoleBiz.deleteSysRole(ids);
	}

	/**
	 * 更新角色表
	 *
	 * @param updateReq 请求参数
	 * @return int
	 * @author 马庆智
	 * @date: 2023/03/28 17:07:14
	 */
	@Override
	public int updateSysRole(SysRoleUpdateReqVo updateReq) {
		return sysRoleBiz.updateSysRole(updateReq);
	}

	/**
	 * 角色菜单
	 *
	 * @param roleId 角色id
	 * @return list
	 * @author 马庆智
	 * @date: 2023/3/30 9:29
	 */
	@Override
	public RoleMenuRespVo queryRoleMenuList(Integer roleId) {
		return sysRoleBiz.queryRoleMenuList(roleId);
	}

	/**
	 * 分配角色菜单
	 *
	 * @param record 请求参数
	 * @return SysUserResp
	 * @author 马庆智
	 * @date: 2023/3/30 9:18
	 */
	@Override
	public Integer saveRoleMenuList(SaveRoleMenuListReqVo record) {
		if (record.getRoleId() == RoleEnum.ADMIN_ROLE.getCode()) {
			throw new BaseServiceException(ExceptionEnum.ADMIN_PERMISSIONS_ERROR);
		}
		return sysRoleBiz.saveRoleMenuList(record);
	}
}